package algorithm.leetcode.I1to100;

import java.util.HashMap;

public class Q3 {

    public int lengthOfLongestSubstring(String s) {
        if (s.length() <= 1) return s.length();

        int left = -1, right = 0;
        // 记录字符与位置的关系
        HashMap<Character, Integer> map = new HashMap<>();
        int maxLen = 0;

        while (right < s.length()) {
            // 如果set包含这个字符,移动左指针,注意取left和map已有位置的最大,这个容易忘记
            // 更新map,计算长度
            // 移动右指针
            if (map.containsKey(s.charAt(right))) {
                left = Math.max(map.get(s.charAt(right)), left);
            }
            map.put(s.charAt(right), right);
            maxLen = Math.max(maxLen, right-left);
            right ++;
        }
        return maxLen;
    }

}
